//抽象类
//抽象方法只需要声明, 没有方法体的方法
//抽象类中也可以存着具体方法

abstract class Phone {
  //抽象方法
  void processor();

  void camera();

  //抽象类中的实例方法, 也可被继承自它的类访问
  void info() {
    print('抽象类中也可以存着具体方法');
  }
}

class Xiaomi extends Phone {
  @override
  void processor() {
    print('骁龙888处理器');
  }

  @override
  void camera() {
    print('三星的摄像头');
  }
}

class HuaWei extends Phone {
  @override
  void processor() {
    print('麒麟999处理器');
  }

  @override
  void camera() {
    print('莱卡摄像头');
  }
}

void main(List<String> args) {
  //抽象类不能被实例化: Abstract classes can't be instantiated.
  // var p = Phone();

  var m = Xiaomi();
  m.processor();
  m.camera();
  m.info();


  var h = HuaWei();
  h.processor();
  h.camera();
  h.info();
}
